package server;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;

/**
 *
 *功能描述:封装Response对象，需要依赖于OutputStream
 *         提供输出html的核心方法
 * @author zj
 * @date 2021/7/16
 */
public class Response {

    private OutputStream outputStream;

    public Response(OutputStream outputStream) {
        this.outputStream = outputStream;
    }

    public Response() {

    }

    /**
     *
     *功能描述:使用输出流 输出指定内容
     * @param  message 输出内容
     * @return void
     * @author zj
     * @date 2021/7/16
     */
    public void outPutMessage(String message) throws IOException {
        outputStream.write(message.getBytes());
    }

    /**
     *
     *功能描述:输出html
     * @param  path url  随后通过url获取静态文件的的绝对路径，进而根绝静态资源的额绝对绝对路径读取静态资源，最终通过输出流输出
     * @return void
     * @author zj
     * @date 2021/7/16
     */
    public  void  outputHtml(String path) throws IOException {
        //获取静态资源的绝对路径
        String resourceAbsolutePath = StaticResourceUtil.getResourceAbsolutePath(path);
        //获取静态资源
        File file = new File(resourceAbsolutePath);
        //通过输出流输出静态资源
        //判断是否存在静态资源
        if(file.exists() && file.isFile()){
            //通过输出流输出静态资源
            StaticResourceUtil.outputStaticResource(new FileInputStream(file),outputStream);
        }else {
            //返回错误信息
            outPutMessage(HttpProtocolUtil.getHttpHeader404());
        }

    }
    
}
